'use strict';

//导入fs和自定义模块
let fs = require('fs');
let {sequelize} = require('../Db');

//筛选当前文件夹下以.js结尾的文件，且不是index.js的文件
function searchFiles(){
    //获取当前文件所在文件夹下的所有文件
    let files = fs.readdirSync(__dirname);
    //使用过滤器筛选当前文件夹下以.js结尾的文件，且不是index.js的文件
    let filterFile = files.filter((item) => {
        return item.endsWith('.js') && item !== 'index.js';
    });
    return filterFile;
}

//引入所有模型到指定对象
function registerModel(filterFile){
    //定义空对象，用于存放所有模型
    let obj = {};
    //循环遍历所有模型，把模型放到obj中
    filterFile.forEach(item => {
        //索引从0开始，去掉后三位，即后缀，仅获取文件名
        let key = item.substring(0,item.length - 3);
        //将模型存放入obj对象
        obj[key] = require(__dirname + '/' + item);
    });
    //返回对象
    return obj;
}

//调用函数
let filterFile = searchFiles();
let obj = registerModel(filterFile);


//给obj绑定sync方法
obj.sync = async (ctx,next)=>{
    if(process.env === 'product'){
        console.log('当前是生产环境，不得强制删除或修改表');
    }
    else{
        return sequelize.sync({force:true});  //force:true 创建表时，如果表存在，先删除，再创建
    }
}

//暴露
module.exports = obj;